package com.jiangxjsy.admin.service;

import com.alibaba.fastjson.JSONObject;
import com.jiangxjsy.core.common.AdminRoleType;
import com.jiangxjsy.model.admin.bo.AdminRoleBO;
import com.jiangxjsy.model.admin.entity.AdminRole;
import com.jiangxjsy.model.admin.vo.AdminRoleVO;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * wukong-crm-master
 * 蒋胜宇
 * 2025/6/6 17:21
 */

public interface AdminRoleService {
    /**
     * 查询用户没有授权的菜单
     *
     * @param userId 用户 id
     * @return 菜单列表
     */
    List<String> queryNoAuthMenu(Long userId);

    /**
     * 角色权限
     *
     * @param request 请求
     * @param response 响应
     * @return JSONObject
     */
    JSONObject auth(HttpServletRequest request, HttpServletResponse response);

    /**
     * 通过角色类型和用户 id 查询角色列表
     *
     * @param type 角色类型
     * @param userId 用户 id
     * @return 角色列表
     */
    List<AdminRole> queryRoleByRoleTypeAndUserId(Integer type, Long userId);

    /**
     * 获取角色类型列表
     *
     * @return 角色类型列表
     */
    List<Map<String, Object>> getRoleTypeList();

    /**
     * 通过用户 id 查询角色列表
     *
     * @param userId 用户 id
     * @return 角色列表
     */
    List<AdminRole> queryRoleListByUserId(Long userId);

    /**
     * 获取角色列表
     *
     * @param request 请求
     * @param response 响应
     * @return 角色列表
     */
    List<AdminRoleVO> getRoleList(HttpServletRequest request, HttpServletResponse response);

    /**
     * 获取全部角色列表
     *
     * @return 全部角色列表
     */
    List<AdminRoleVO> getAllRoleList();

    /**
     * 根据类型查询角色
     *
     * @param roleTypeEnum 角色类型
     * @return 角色列表
     */
    List<AdminRoleBO> getRoleByType(AdminRoleType roleTypeEnum);

    /**
     * 根据类型查询角色
     *
     * @param type 角色类型
     * @return 角色列表
     */
    List<AdminRole> queryRoleByRoleType(Integer type);
}
